package com.jcfk.eam.dao.main;

import com.jcfk.common.business.dao.BaseDao;
import com.jcfk.common.web.domain.DataPage;
import com.jcfk.eam.domain.dto.main.CheckItemCountDTO;
import com.jcfk.eam.domain.dto.main.CheckOrderCountDTO;
import com.jcfk.eam.domain.dto.main.EamPointCheckDetailDTO;
import com.jcfk.eam.domain.dto.main.EamPointCheckOrderDTO;
import com.jcfk.eam.domain.po.main.EamPointCheckOrder;
import com.jcfk.eam.domain.query.main.EamPointCheckOrderQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 资产点检工单
 * 
 * @author yrl
 * @email 
 * @date 2024-11-06
 */
@Repository
public interface EamPointCheckOrderDao extends BaseDao<EamPointCheckOrder> {
    /**
     * 资产点检工单分页查询
     *
     * @param page
     * @param query
     * @return
     */
    DataPage<EamPointCheckOrderDTO> queryByPage(@Param("page") DataPage<EamPointCheckOrderDTO> page, @Param("query") EamPointCheckOrderQuery query);

    /**
     * 资产计划点检工单分页查询
     *
     * @param page
     * @param query
     * @return
     */
    DataPage<EamPointCheckOrderDTO> queryByPlan(@Param("page") DataPage<EamPointCheckOrderDTO> page, @Param("query") EamPointCheckOrderQuery query);

    /**
     * 根据任务分页查询设备巡检工单
     * @param page
     * @param query
     * @return
     */
    DataPage<EamPointCheckOrderDTO> queryByTask(@Param("page") DataPage<EamPointCheckOrderDTO> page, @Param("query") EamPointCheckOrderQuery query);

    /**
     * 我的资产点检工单分页查询
     *
     * @param page
     * @param query
     * @return
     */
    DataPage<EamPointCheckOrderDTO> queryMyList(@Param("page") DataPage<EamPointCheckOrderDTO> page, @Param("query") EamPointCheckOrderQuery query);
    /**
     * 指定模具code查询最后一次点检详情
     * @param assetCode 模具编码
     */
    List<EamPointCheckDetailDTO> getDetailByAssetCode(@Param("assetCode") String assetCode);

    /**
     * 指定id查询详情
     * @param id 工单id
     * @return 详情
     */
    EamPointCheckOrderDTO queryById(@Param("id") String id);

    /**
     * 获取工单统计信息
     * @param taskId
     * @return
     */
    CheckOrderCountDTO getOrderCount(@Param("taskId") String taskId);

    /**
     * 获取点检项统计信息
     * @param orderId
     * @return
     */
    CheckItemCountDTO getItemCount(@Param("orderId") String orderId);
}
